package com.toy.controller.admin;

import com.toy.entity.Product;
import com.toy.entity.ProductCategory;
import com.toy.service.ProductCategoryService;
import com.toy.vo.SysResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author tystart
 * @create 2022-09-08-16:50
 */
@RestController
@CrossOrigin
@RequestMapping("/itemCat")
public class ItemCartController {

    @Autowired
    private ProductCategoryService productCategoryService;

    /**
     * 查询3级商品分类信息
     * 请求路径: /itemCat/findItemCatList/{level}
     * 请求类型: get
     * 请求参数: level
     *
     * 参数名称参数说明备注
     * level查询级别
     * 1 查询一级分类
     * 2 查询 1-2 级商品分类
     * 3 查询 1-2-3 级商品分类
     *
     * 业务说明: 查询 3 级分类菜单数据 要求三层结构嵌套
     * 返回值: SysResult 对象
     */
    @GetMapping("/findItemCatList/{level}")
    public SysResult findItemCatList(@PathVariable Integer level) {
        List<ProductCategory> itemCatList = productCategoryService.findItemCatList(level);
        return SysResult.success(itemCatList);
    }


    /**
     * 商品分类新增
     * 请求路径: /itemCat/saveItemCat
     * 请求类型: post
     * 请求参数: 表单数据
     * 参数名称 参数说明 备注
     * name 商品分类名称 不能为 null
     * parentId 分类父级 ID 不能为 null
     * level 分类级别 1 2 3 商品分类级别
     * @param itemCat
     * @return
     * @RequestBody声明，从请求体中取出js对象的信息（是json格式）
     */
    @PostMapping("/saveItemCat")
    public SysResult saveItemCat(@RequestBody ProductCategory itemCat){
        productCategoryService.saveItemCat(itemCat);
        return SysResult.success();
    }


    /**
     * 商品分类修改
     * 请求路径：/itemCat/updateItemCat
     * 请求类型：put
     * 请求参数：表单数据ItemCat对象
     * 返回值：SysResult
     * @param itemCat
     * @return SysResult
     */
    @PutMapping("/updateItemCat")
    public SysResult updateItemCat(@RequestBody ProductCategory itemCat){
        productCategoryService.updateItemCat(itemCat);
        return SysResult.success();
    }

    /**
     * 商品分类删除
     * 请求路径：/itemCat/deleteItemCat
     * 请求类型：delete
     * 请求参数：表单数据ItemCat对象
     * 业务描述：当删除节点为父级时，应该删除自身和所有的子节点
     * 返回值：SysResult
     * @param itemCat
     * @return
     */
    @DeleteMapping("/deleteItemCat")
    public SysResult deleteItemCat(ProductCategory itemCat){
        productCategoryService.deleteItemCat(itemCat);
        return SysResult.success();
    }
}
